#ifndef CUDA_COLOR_BAR_H
#define CUDA_COLOR_BAR_H

/**
 ColorBar的cuda版本，可以替代ColorBar
*/

namespace solar::cuda
{
    class CudaColorBar
    {
        public:
            CudaColorBar();
            ~CudaColorBar();

            void setColor(); // 设置颜色表---设置一次即可，设置之后不再更改
            // int3 getColorAtValue(float value);     // 获得某个值对应的颜色
            // int3 getColorAtValue(float value, float min_value, float max_value);
            // int3 getColorAtFactor(float factor);
            //     float getFactor(float value);   // 获取该值对应的比例

            //     int getRedComponentAtValue(float value);
            //     int getGreenComponentAtValue(float value);
            //     int getBlueComponentAtValue(float value);

            //     void setMinMax(float min_value, float max_value);
            //     float getMin();
            //     float getMax();

            auto getColors() -> int3*& { return colors_; }
            auto getFactors() -> float*& { return factors_; }
            [[nodiscard]] auto getColorNum() const -> int { return color_num_; }
            void test();

        private:
            float min_, max_;
            int3* colors_;
            // int* red_;
            // int* green_;
            // int* blue_;
            float* factors_;

            int color_num_ = 0;
    };
} // namespace solar::cuda

#endif
